/**
 * 发送GET请求
 * 技术栈：function + ajax + callback
 * @param {String} url 请求地址 
 * @param {String} params 请求参数   格式：参数名=值&....&参数名=值
 * @param {Function} callback  回调函数
 * @param {Function} headersFn 自定义请求头
 * @return undefined
 */

//GET
function get(url,params,callback,headersFn=null){
    //创建xhr对象
    const xhr = new XMLHttpRequest
    //监听请求状态
    xhr.onreadystatechange = function(){
        //判断后端返回数据
        if (xhr.readyState === 4) {
            if (xhr.status ===200) {
                //判断并返回数据再处理
                let res = JSON.parse(xhr.responseText)
                //不同逻辑处理
                callback(res)
            }else{
                console.log('请求失败:',xhr.status);
            }
        }
    }
    //设置请求方式，请求地址
    xhr.open('get',`${url}?${params}`)
    if(headersFn) headersFn(xhr)
    xhr.send(null)
}

//POST
/**
 * 发送POST请求
 * 技术栈：function + ajax + callback
 * @param {String} url 请求地址
 * @param {String} params 请求参数 格式：参数名=值&....&参数名=值
 * @param {Function} callback 回调函数
 * @param {Function} headersFn 自定义请求头
 * @return undefined
 */
function post(url,params,callback,headersFn=null){
    const xhr = new XMLHttpRequest
    xhr.onreadystatechange = function(){
        if (xhr.readyState===4) {
            if (xhr.status===200) {
                let res = JSON.parse(xhr.responseText)
                callback(res)
            }else{
                console.log('请求失败:',xhr.status);
            }
        }
    }
    xhr.open('post',url)
    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
    if (headersFn) headersFn(xhr)
    xhr.send(params)
}